#include <stdio.h>

// 位运算   控制多个位 以及控制 1 个位
// 8  16 32  64
// &    与运算   一 一 得 一
// |    或运算   有一 得 一
// ^    异或     相同为0 不同为1
// ~ ^  同或     不同为0 相同为1
// ~    取反     。。。。
// <<   左移
// >>   右移

int main(int argc, char const *argv[])
{
    char ch_1 = 60;
    char ch_2 = 80;

    printf("ch_1 & ch_2 = %d\n", ch_1 & ch_2);
    printf("ch_1 & ch_2 = %d\n", ch_1 | ch_2);

    printf("ch_1 & ch_2 = %d\n", ch_1 ^ ch_2);

    // 数据清空
    ch_1 = 0;

    // 向要指定的位置写1    对指定位置写 1
    ch_1 |= (0x01 << 1);
    ch_1 |= (0x01 << 3);
    ch_1 |= (0x01 << 5);
    ch_1 |= (0x01 << 7);
    printf("ch_1 = %d\n", ch_1); // 1010 1010     -86

    // 对指定位置写0
    ch_1 = -1;            // 全 1      1111 1111
    ch_1 &= ~(0x01 << 1); //  1111 1101
    ch_1 ^= (0x01 << 3);
    ch_1 &= ~(0x01 << 5); //  1111 1101
    ch_1 ^= (0x01 << 7);
    printf("ch_1 = %d\n", ch_1); // 0101 0101       85
    return 0;
}

